package cn.jr.test;

import cn.jr.service.*;
import cn.jr.service.impl.*;
import cn.jr.util.ConsolePrintUtils;
import cn.jr.util.ConsoleScrollAdUtils;
import cn.jr.util.InputExample;

import java.util.*;

@SuppressWarnings("all")
public class ShopRunMain {
    private static final Scanner scanner = new Scanner(System.in);
    IOrderProjectService iops = new OrderProjectServiceImpl();
    IWareService iws = new WareServiceImpl();
    IOrderService iods = new OrderServiceImpl();
    String userId = null;

    public static void main(String[] args) {
        ConsoleScrollAdUtils.guangGao();
        new ShopRunMain().menu();//主菜单
    }
    public void menu() {//主菜单
        /**
         * 1.用户注册 2.用户登录 0.退出程序
         * 登录后的功能菜单 1.结账 2.退货 3.对账统计 4.活动 5.登录主菜单
         */
        boolean flag = true;
        while (flag) {
            ConsolePrintUtils.printMainMenu();
            int choice = InputExample.getIntInputAll("请输入选项：");
            switch (choice) {
                case 1:
                    LoginUserTest.registerUser();
                    break;
                case 2:
                    ArrayList<String> list = LoginUserTest.loginUser();
                    if (list.size() > 0) {
                        userId = list.get(0);
                        flag = false;
                    }
                    break;
                case 0:
                    System.out.println("感谢使用，再见！");
                    System.exit(0);
                default:
                    System.out.println("无效选项，请重新输入！");
            }
        }
        gongNengMenu();//登录成功后进入功能菜单
    }
    public void gongNengMenu() {//功能菜单
        /**
         * 1.结账 2.退货 3.对账统计 4.活动 5.登录主菜单 0.退出程序
         */
        while (true) {
            ConsolePrintUtils.printMainMenu1();
            int choice = InputExample.getIntInputAll("请输入选项：");
            switch (choice) {
                case 1:
                    jieZhangMenu();//结账菜单
                    break;
                case 2:
                    tuiHuoMenu();
                    break;
                case 3:
                    tongJi();
                    break;
                case 4:
                    ActiveMenu();//活动菜单
                    break;
                case 5:
                    menu();
                    break;
                case 0:
                    System.out.println("感谢使用，再见！");
                    System.exit(0);
                default:
                    System.out.println("无效选项，请重新输入！");
            }
        }

    }
    private void jieZhangMenu() {//结账
        /**
         * 1.输入1添加商品  ，输入2移除商品
         * 判断商品编号是否正确，不正确提示错误，并让用户重新输入
         * 查询商品信息，显示商品信息
         * 2.输入该商品数量
         * 3.添加商品到订单
         * 4.输入1添加商品，输入2生成订单付款，输入3返回结账功能菜单，输入0退出系统
         *添加和移除菜单可自由切换
         */
        while (true) {
            ConsolePrintUtils.printMainMenu11();
            int choice = InputExample.getIntInputAll("请输入选项：");
            switch (choice) {
                case 1:
                    System.out.println("请输入商品编号添加商品");
                    String waresNumber = scanner.nextLine();
                    double waresCount = InputExample.getDoubleInputAll("请输入该商品数量");
                    if (iws.selectWareByWaresNumber(waresNumber) == null) {
                        System.out.println("该商品未在库中");
                        break;
                    }
                    iops.insertOrderProjectInOrder(iws.selectWareByWaresNumber(waresNumber), waresCount);
                    JieZhangTest.ADDOrderProject(userId);
                    break;
                case 2:
                    JieZhangTest.removeOrderProject(userId);
                    break;
                case 3:
                    gongNengMenu();
                    break;
                case 0:
                    System.out.println("感谢使用，再见！");
                    System.exit(0);
                default:
                    System.out.println("无效选项，请重新输入！");
            }
        }

    }
    private void tuiHuoMenu() {
        /**
         *
         * 1.请输入订单编号，输入0返回
         * 判断订单编号是否正确，不正确提示错误，并让用户重新输入
         * 查询订单信息，显示订单信息
         * 2.输入退货商品编号和退货数量，判断是否可退货
         * 3.更新订单项表和账户金额信息表
         * 4.返回
         */
        String orderId = null;
        while (true) {
            ConsolePrintUtils.printMainMenu12();
            System.out.println("请输入查询的订单编号\t\t退出退货查询界面请输入0");
            String orderNumber = scanner.nextLine();
            if ("0".equals(orderNumber)) {
                return;
            }
            orderId = iods.selectOrder(orderNumber);//根据订单编号找到订单id
            if (orderId == null) {
                System.out.println("未找到该订单，请重新输入");
            } else {
                break;
            }
        }
        while (true) {
            TuiHuoTest.showTuiHuo(orderId);//展示要退货的订单信息
            int a= TuiHuoTest.tuiHuoByWaresNumber(orderId,userId);//通过商品编号进行退货
            if(a>0){
                break;
            }
        }
    }
    private void tongJi() {
        /**
         * 1.账户查询 2.按时间统计 3.按商品统计 4.返回 0.退出系统
         */
        while (true) {
            ConsolePrintUtils.printMainMenu13();
            int choice = InputExample.getIntInputAll("请输入选项：");
            switch (choice) {
                case 1:
                    TongJiTest.ZHCX(userId);//账户查询
                    break;
                case 2:
                    TongJiTest.timeTJ();
                    break;
                case 3:
                    TongJiTest.waresNumberOrderTJ();
                    break;
                case 4:
                    gongNengMenu();
                    break;
                case 0:
                    System.out.println("感谢使用，再见！");
                    System.exit(0);
                default:
                    System.out.println("无效选项，请重新输入！");
            }
        }
    }
    private void ActiveMenu() {//活动功能菜单
        /**
         * 1.添加活动 2.查询活动 3.返回 0.退出系统
         * 1.请输入活动名称添加活动
         * 判断活动名称是否正确，不正确提示错误，并让用户重新输入
         * 2.查询活动信息，显示活动信息
         * 活动显示格式：支持上下翻页，一页10条数据,并可进行删除修改
         * 3.输入3返回活动功能菜单，输入0退出系统
         */
        while (true) {
            ConsolePrintUtils.printMainMenu14();
            int choice = scanner.nextInt();
            scanner.nextLine(); // 清除换行符
            switch (choice) {
                case 1:
                    ActiveTest.ADDActive();
                    break;
                case 2:
                    ActiveTest.QUERYActive();
                    break;
                case 3:
                    gongNengMenu();
                    break;
                case 0:
                    System.out.println("感谢使用，再见！");
                    System.exit(0);
            }
        }
    }
}